gitlab 有個 ci/cd的功能 透過 .gitlab-ci.yml 檔案管理
image: node:8.9.1
cache:
paths:
- node_modules/
- client/node_modules/
- server/node_modules/
variables:
NODE_ENV: test
PORT: 3000
stages:
- test
- build
- deploy
test:
stage: test
before_script:
- apt-get update
- npm install
- npm run install-dev
script:
- npm run ci &
- sleep 30
- npm run test
以下省略
通常會在gitlab 每次 merge後 指定master branch 觸發(可以指定不同的觸發點)這個script, 這個script
一開始會讓你指定環境 image: node:8.9.1
cache 如果在某一個環節跑過跳到下一個環節就不在重跑一次 例如 npm install 的 node_modules
variables 環境變數
stages 可以指定多個 想要部署的階段 通常基本都會設定 test build deploy 但根據專案大小會在調整
每個stages 例如上方的test 有 before_script script 根據需求去執行 如果該stages 程式碼沒問題就會跳往下一個 stages 直到完成 通常錯誤就會停止,但也有參數可以設定 忽略 但不建議
gitlab有提供 跑ci/cd的docker 通常在test 或 build的時候 也都會使用 gitlab提供的免費環境
但是有時候要求速度 或是最後 deploy的時候 一定要部署到自己機器時
就可以透過 git-runner 可以在stages的時候 指定 tags 就可以把script指定在自己的機器上跑
也可以同時多台執行 只要在自己的 機器上安裝 git-runner 然後在 stage中指定tag即可
總結
gitlab 提供了免費私人專案 (有限制) 還有好用簡單的 ci/cd 部署環境